home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / ada_pcdp / ada / philm.ada < prev    next >
Text File  |  1996-01-30  |  724b  |  33 lines

  1. with Text_IO; use Text_IO;
  2. with Phil_Monitor; use Phil_Monitor; 
  3. procedure Philm is
  4.  
  5.   type Node_ID is range 0..4;
  6.  
  7.   task type Nodes is
  8.     entry Init(ID: Node_ID);
  9.   end Nodes;
  10.  
  11.   Node: array(Node_ID) of Nodes;
  12.  
  13.   task body Nodes is
  14.     I:           Node_ID;
  15.   begin
  16.     accept Init(ID: Node_ID) do
  17.       I := ID;
  18.     end Init;
  19.     for M in 1..5 loop
  20.       Put_Line(" " & Node_ID'Image(I) & " thinking");
  21.       Take_Fork(Integer(I));
  22.       Put_Line(" " & Node_ID'Image(I) & " critical section");
  23.       Release_Fork(Integer(I));
  24.       Put_Line(" " & Node_ID'Image(I) & " forks released");
  25.     end loop;
  26.   end Nodes;
  27.  
  28. begin
  29.   for J in Node_ID loop
  30.     Node(J).Init(J);
  31.   end loop;
  32. end Philm;
  33.